CouchDB একটি অত্যন্ত নমনীয় এবং শক্তিশালী ডাটাবেস সিস্টেম, যা MapReduce এবং Views এর মাধ্যমে কাস্টম কিউরি এবং ফাংশন তৈরি করতে সহায়ক। আপনি যদি CouchDB-তে কাস্টম ফাংশন তৈরি করতে চান, আপনি JavaScript ব্যবহার করে কাস্টম Map, Reduce, বা Filter Functions তৈরি করতে পারবেন।
এখানে Custom Functions তৈরি এবং ব্যবহার করার উদাহরণ দেয়া হলো।
Map function কাস্টম কিউরি তৈরি করতে ব্যবহৃত হয় যা ডকুমেন্ট থেকে ডেটা বের করে এবং key-value পেয়ার তৈরি করে। এই কাস্টম ফাংশনটি সাধারণত Views-এর অংশ হিসেবে কাজ করে।
ধরা যাক, আমাদের একটি users
ডাটাবেস আছে এবং আমরা যদি প্রতিটি ব্যবহারকারীর age (বয়স) বের করতে চাই, তাহলে আমাদের একটি কাস্টম Map function তৈরি করতে হবে।
function (doc) {
if (doc.age) {
emit(doc.age, 1);
}
}
emit()
: এখানে emit(doc.age, 1)
ব্যবহার করা হয়েছে, যাতে age কে key হিসেবে এবং 1 কে value হিসেবে নির্ধারণ করা হয়।age
এর উপর ভিত্তি করে ডেটার একটি তালিকা তৈরি করবে, যাতে বয়সের মান এবং তার সাথে সম্পর্কিত হিসাব করা যাবে।Reduce function ব্যবহারকারীকে Map function এর মাধ্যমে বের করা key-value pairs থেকে ফলাফল সংকুচিত বা aggregate করতে সহায়ক। এতে ডেটার বিভিন্ন পরিসংখ্যান, যেমন sum, average, count ইত্যাদি বের করা যায়।
যদি আমরা চাই যে age ভিত্তিক সব ব্যবহারকারীর সংখ্যা বের করতে, তাহলে আমরা একটি কাস্টম Reduce function তৈরি করতে পারি।
function (keys, values, rereduce) {
return sum(values);
}
sum(values)
ব্যবহৃত হয়েছে, যা values
অ্যারের সব মানের যোগফল বের করবে।Map
ফাংশন থেকে বের হওয়া age কীর সাথে সম্পর্কিত সকল মানের যোগফল (যেমন, কতজন ব্যবহারকারী নির্দিষ্ট বয়সের মধ্যে আছেন) প্রদান করবে।CouchDB তে Filter Functions ব্যবহার করে ডেটা রিড করার সময় বিভিন্ন কন্ডিশন চেক করা যায়। এই ফাংশনটি MapReduce ফাংশনের মতো কাজ না করে, View এ কেবলমাত্র ডেটার filtering সম্পাদন করে।
ধরা যাক, আমরা শুধুমাত্র active ব্যবহারকারীদের দেখতে চাই, যারা is_active ফিল্ডে true
আছে।
function (doc, req) {
if (doc.is_active === true) {
return true;
}
return false;
}
true
মান থাকা ডকুমেন্টগুলোই ফিল্টার করবে এবং কেবলমাত্র তাদেরকে View-তে প্রদর্শন করবে।কাস্টম ফাংশনগুলো সাধারণত CouchDB Views এর মধ্যে ব্যবহার করা হয়, এবং এই ফাংশনগুলোকে Design Document-এ অন্তর্ভুক্ত করা হয়। একটি Design Document-এ View তৈরির উদাহরণ:
{
"_id": "_design/user_views",
"views": {
"age_view": {
"map": "function (doc) { if (doc.age) { emit(doc.age, 1); } }",
"reduce": "function (keys, values, rereduce) { return sum(values); }"
}
}
}
View এর মাধ্যমে কাস্টম কিউরি চালানোর জন্য আপনি HTTP API ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
GET /db/_design/user_views/_view/age_view
এটি age_view নামক view থেকে ডেটা বের করবে এবং সেখানে Map এবং Reduce ফাংশন অনুযায়ী ফলাফল প্রদর্শন করবে।
Custom Functions CouchDB-তে ডেটা বিশ্লেষণ এবং কাস্টম কিউরি তৈরি করার জন্য একটি শক্তিশালী টুল। আপনি Map, Reduce, এবং Filter ফাংশন ব্যবহার করে আপনার ডেটাবেসের জন্য কাস্টম কিউরি এবং ডেটা প্রসেসিং কার্যক্রম তৈরি করতে পারেন। CouchDB তে এই ফাংশনগুলি খুবই সহজ এবং কার্যকরী, যা অ্যাপ্লিকেশন ডেভেলপমেন্টে সহায়ক।